마이크로서비스란
- 마이크로서비스 아키텍처
- 아키텍처 스타일은 건축 양식을 의미
- 구조를 구체화하기 위한 기술, 기법, 재료
- 독립적으로 개발되는 소프트웨어 컴포넌트(서비스)를 여러 개 조합하여 하나의 어플리케이션 구축
- 4.RESOURCE/CULTURE/Book/그림으로 공부하는 마이크로서비스 구조/컨테이너, 컨테이너 오케스트레이션, REST, 메시징 등의 기술을 통해 구체화
- 데브옵스, 애자일, DDD 등의 기법을 통해 실현
- 이러한 것들이 마이크로서비스를 구축하는 아키텍처로 작용
- 아키텍처 스타일은 건축 양식을 의미
- 역사
- 2014년 마틴 파울러와 제임스 루이스가 기고한 글
- 애플리케이션을 독립된 소프트웨어 컴포넌트로 분할
- 하나의 요청을 처리하기 위해 서비스는 REST나 메시징으로 통신하는 분산 컴퓨팅 환경 구성
- 장점
- 세밀한 소프트웨어 구조
- 한 번에 전체를 릴리스하는 빅뱅형 기법이 아님
- 일부를 단계적으로 릴리즈하고 변경하는 유연성
- 요청이 집중된 서비스만 스케일 아웃, 혹은 스케일 인 가능
- 시스템 리소스의 최적 사용 및 가동률 개선 기여
- 서킷 브레이커를 통해 장애 영향 범위 최소화 가능
- 잦은 빈도의 배포 환경에서 적합
- 세밀한 소프트웨어 구조
- 단점
- 요청이 발생할 때마다 통신 다수 발생하여 성능 저하 가능성
- 데이터도 분산 배치되어 DB 일관성이나 동기화 기법 정비 필요
- 난이도 높고, 시스템 전체 설계 일관성 고려 필요
- 그럼에도 유연한 구조로 개별 유지 보수 가능
- DX에서 중요한 속도와 유연성의 실현을 도와줌